perm filename OPDECL.SAI[PNT,HE] blob
sn#576957 filedate 1981-04-04 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 REdefine
C00020 ENDMK
C⊗;
REdefine
preload_array(name, defs, type, first, len)"[][]"=[
preload_with defs null; type array name[first:first+len] ];
REdefine
indices(name, postfix)"[][]"=[
redefine xxcount=1;
redefine xx(xxarg)=[
redefine xxtemp= [ define xxarg]&[postfix=xxcount];
xxtemp;
redefine xxcount=xxcount+1;];
name ];
define op_list "[][]"=[
ZZC("≡", eqv, EXP_XX, [F3←1-(B1 XOR B2)])
XXX(XEQV,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("EQV", eeqv, EXP_XX, [F3←1-(B1 XOR B2)])
XXX(XEQV,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("∨", or, BEFACT_XX, [F3←B1 LOR B2])
XXX(XLOR,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("OR", oor, BEFACT_XX, [F3←B1 LOR B2])
XXX(XLOR,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("⊗", xor, BEFACT_XX, [F3←B1 XOR B2])
XXX(XXOR,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("XOR", xxor, BEFACT_XX, [F3←B1 XOR B2])
XXX(XXOR,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("∧", and, BFACT_XX, [F3←B1 LAND B2])
XXX(XAND,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("AND", aand, BFACT_XX, [F3←B1 LAND B2])
XXX(XAND,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("=", seq, BTERM_XX, [F3← -(F1=F2)])
XXX(XSEQ,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("≠", sne, BTERM_XX, [F3← -(F1≠F2)])
XXX(XSNE,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC(">", sgt, BTERM_XX, [F3← -(F1>F2)])
XXX(XSGT,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("<", slt, BTERM_XX, [F3← -(F1<F2)])
XXX(XSLT,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("≥", sge, BTERM_XX, [F3← -(F1≥F2)])
XXX(XSGE,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("≤", sle, BTERM_XX, [F3← -(F1≤F2)])
XXX(XSLE,0, #SC,120,#SC, #SC, 0, NIL_D,ANY_D,SAME1_D,NIL_D)
ZZC("+", Plus, AEXP_XX, [F3← F1 + F2])
XXX(XNOOP,0, #SC,100,#SC, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XSADD,0, #SC,120,#SC, #SC, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XNOOP,0, #VT,100,#VT, 0, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XVADD,0, #VT,120,#VT, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTVADD,0, #TR,120,#VT, #TR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTVADD,0, #FRE,120,#VT, #FR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTVADD,0, #TR,120,#TR, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTVADD,0, #FRE,120,#FR, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZ("#", pplus, AEXP_XX, [])
XXX(XTVREL,0, #TR,120,#VT, #TR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTVREL,0, #FRE,120,#VT, #FR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTVREL,0, #TR,120,#TR, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTVREL,0, #FRE,120,#FR, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZC("-", minus, AEXP_XX, [F3← F1 - F2])
XXX(XSNEG,0, #SC,100,#SC, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XSSUB,0, #SC,120,#SC, #SC, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XVNEG,0, #VT,100,#VT, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XVSUB,0, #VT,120,#VT, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTVSUB,0, #TR,120,#TR, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTVSUB,0, #FRE,120,#FR, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZ(".", vdot, TERM_XX, [])
XXX(XVDOT,0, #SC,120,#VT, #VT, 0, MULT_D,ANY_D,ANY_D,NIL_D)
ZZC("*", times, TERM_XX, [F3← F1 * F2])
XXX(XSMUL,0, #SC,120,#SC, #SC, 0, MULT_D,ANY_D,ANY_D,NIL_D)
XXX(XSVMUL,0, #VT,120,#SC, #VT, 0, MULT_D,ANY_D,ANY_D,NIL_D)
XXX(XVSMUL,0, #VT,210,#VT, #SC, 0, MULT_D,ANY_D,ANY_D,NIL_D)
XXX(XVCROSS,0,#VT,120,#VT, #VT, 0, MULT_D,ANY_D,ANY_D,NIL_D)
XXX(XTVMUL,0, #VT,120,#RT, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTTMUL,0, #RT,120,#RT, #RT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTVMUL,0, #VT,120,#TR, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTTMUL,0, #TR,120,#TR, #TR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTTMUL,0, #FRE,120,#TR, #FR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTTMUL,0, #FRE,120,#FR, #VT, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTTMUL,0, #FRE,120,#FR, #TR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XTTMUL,0, #FRE,120,#FR, #FR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZC("/", sdiv, TERM_XX, [F3← F1 / F2])
XXX(XSDIV,0, #SC,120,#SC, #SC, 0, DIVID_D,ANY_D,ANY_D,NIL_D)
XXX(XVSDIV,0, #VT,120,#VT, #SC, 0, DIVID_D,ANY_D,ANY_D,NIL_D)
ZZC("MAX", max, TERM_XX, [F3← F1 MAX F2])
XXX(XMAX,0, #SC,120,#SC, #SC, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZC("MIN", min, TERM_XX, [F3← F1 MIN F2])
XXX(XMIN,0, #SC,120,#SC, #SC, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZC("DIV", div, TERM_XX, [F3← I1 DIV I2])
XXX(XIDIV,0, #SC,120,#SC, #SC, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZC("MOD", mod, TERM_XX, [F3← I1 MOD I2])
XXX(XMOD,0, #SC,120,#SC, #SC, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZ("REL", rel, WRTREL_XX, [])
XXX(XVFREL,0, #VT,210,#VT, #TR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XVFREL,0, #VT,210,#VT, #FR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XFFREL,0, #TR,210,#TR, #TR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XFFREL,0, #TR,210,#TR, #FR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XFFREL,0, #TR,210,#FR, #TR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XFFREL,0, #TR,210,#FR, #FR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZ("WRT", wrt, WRTREL_XX, [])
XXX(XWRT,0, #VT,210,#VT, #TR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XWRT,0, #VT,210,#VT, #FR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZ("→", frontarrow, FACTOR_XX, [])
XXX(XFTOF,0, #TR,120,#TR, #TR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XFTOF,0, #TR,120,#TR, #FR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XFTOF,0, #TR,120,#FR, #TR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
XXX(XFTOF,0, #TR,120,#FR, #FR, 0, SAME12_D,ANY_D,SAME1_D,NIL_D)
ZZC("↑", stos, FACTOR_XX, [F3←F1↑F2])
XXX(XSEXP,0, #SC, 120,#SC, #SC, 0, NIL_D,ANY_D,NIL_D,NIL_D)
! following two actually pf_XX;
XXX(XUPARROW,0, #FRE,100,#TR, 0, 0,SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XUPARROW,0, #FRE,100,#FR, 0, 0,SAME1_D,ANY_D,NIL_D,NIL_D)
ZZC("¬", not, PF_XX, [F3←1-B2])
XXX(XNOT,0, #SC,100,#SC, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZ("ORIENT", orient, PF_XX, [])
XXX(XTORIEN,0, #RT,100,#TR, 0, 0, NIL_D,ANY_D,NIL_D,NIL_D)
XXX(XTORIEN,0, #RT,100,#FR, 0, 0, NIL_D,ANY_D,NIL_D,NIL_D)
ZZ("UNIT", uvect, PF_XX, [])
XXX(XUNITV,0, #VT,100,#VT, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZ("AXIS", axis, PF_XX, [])
XXX(XTAXIS,0, #VT,100,#RT, 0, 0, NIL_D,NIL_D,NIL_D,NIL_D)
ZZ("POS", pos, PF_XX, [])
XXX(XTPOS,0, #VT,100,#TR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XTPOS,0, #VT,100,#FR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZ("INV", rinv, PF_XX, [])
XXX(XTINVRT,0, #RT,100,#RT, 0, 0, NIL_D,NIL_D,NIL_D,NIL_D)
XXX(XTINVRT,0, #TR,100,#TR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XTINVRT,0, #TR,100,#FR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZC("INT", int, PF_XX, [F3←I2])
XXX(XINT,0, #SC,100,#SC, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZC("CONSTRUCT", construct, PF_XX, [])
XXX(XCONSTR,0, #TR,123,#VT, #VT, #VT, SAME123_D,ANY_D,SAME1_D,SAME1_D)
XXX(XFCONSTR,0, #TR,123,#FR, #FR, #FR, SAME123_D,ANY_D,SAME1_D,SAME1_D)
ZZC("SQRT", sqrt, PF_XX, [F3←SQRT(F2)])
XXX(XSSBRTN,1,#SC,100,#SC, 0, 0, SQRT_D,ANY_D,NIL_D,NIL_D)
ZZC("SIN", sin, PF_XX, [F3←SIND(F2)])
XXX(XSSBRTN,2,#SC,100,#SC, 0, 0, NIL_D,ANGL_D,NIL_D,NIL_D)
ZZC("COS", cos, PF_XX, [F3←COSD(F2)])
XXX(XSSBRTN,3,#SC,100,#SC, 0, 0, NIL_D,ANGL_D,NIL_D,NIL_D)
ZZC("TAN", tan, PF_XX, [F3←SIND(F2)/COSD(F2)])
XXX(XSSBRTN,4,#SC,100,#SC, 0, 0, NIL_D,ANGL_D,NIL_D,NIL_D)
ZZC("ASIN", asin, PF_XX, [F3←(180.0/π)*ASIN(F2)])
XXX(XSSBRTN,5,#SC,100,#SC, 0, 0, ANGL_D,NIL_D,NIL_D,NIL_D)
ZZC("ACOS", acos, PF_XX, [F3←(180.0/π)*ACOS(F2)])
XXX(XSSBRTN,6,#SC,100,#SC, 0, 0, ANGL_D,NIL_D,NIL_D,NIL_D)
ZZC("ATAN2", atan2, PF_XX, [F3←(180.0/π)*ATAN2(F1,F2)])
XXX(XATAN2,0, #SC,120,#SC, #SC, 0, ANGL_D,ANY_D,SAME1_D,NIL_D)
ZZC("LOG", log, PF_XX, [F3←LOG(F2)])
XXX(XSSBRTN,8,#SC,100,#SC, 0, 0, NIL_D,NIL_D,NIL_D,NIL_D)
ZZC("EXP", exp, PF_XX, [F3←EXP(F2)])
XXX(XSSBRTN,9,#SC,100,#SC, 0, 0, NIL_D,NIL_D,NIL_D,NIL_D)
ZZ("RUNTIME", runtime, PF_XX, [])
XXX(XSSBRTN,10,#SC,100,#SC, 0, 0, TIME_D,ANY_D,NIL_D,NIL_D)
ZZ("ADC", adc, PF_XX, [])
XXX(XADC,-1, #SC,100,#SC, 0, 0, NIL_D,NIL_D,NIL_D,NIL_D)
ZZC("|", MAGNITUDE, PF_XX, [F3←ABS(F2)])
XXX(XSABS,0, #SC,100,#SC, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XVMAGN,0, #SC,100,#VT, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XTMAGN,0, #SC,100,#RT, 0, 0, ANGL_D,NIL_D,NIL_D,NIL_D)
ZZ(["("], LPAREN, PF_XX, [])
ZZ(["( , , )"], IMPLICIT, PF_XX, [])
XXX(XVMAKE,0, #VT,123,#SC, #SC, #SC, SAME123_D,ANY_D,SAME1_D,SAME1_D)
XXX(XVSAXWR,0, #RT,120,#VT, #SC, 0, NIL_D,ANY_D,ANGL_D,NIL_D)
XXX(XTMAKE,0, #TR,120,#RT, #VT, 0, SAME2_D,ANY_D,ANY_D,NIL_D)
ZZ("↓", DOWNARROW, PF_XX, [])
XXX(XDWNARROW,0, #FRE,100,#TR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XDWNARROW,0, #FRE,100,#FR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZ("$", DOLLAR, PF_XX, [])
XXX(XDOLLAR,0, #FRE,100,#TR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XDOLLAR,0, #FRE,100,#FR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZ("α", ALPHA, PF_XX, [])
XXX(XALPHA,0, #FRE,100,#TR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XALPHA,0, #FRE,100,#FR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZ("FRAME", FRAME, PF_XX, [])
XXX(XTMAKE,0, #FR,120,#RT, #VT, 0, SAME2_D,NIL_D,ANY_D,NIL_D)
ZZ("VECTOR", VECTOR, PF_XX, [])
XXX(XVMAKE,0, #VT,123,#SC, #SC, #SC, SAME123_D,ANY_D,SAME1_D,SAME1_D)
ZZ("TRANS", TRANS, PF_XX, [])
XXX(XTMAKE,0, #TR,120,#RT, #VT, 0, SAME2_D,ANY_D,ANY_D,NIL_D)
ZZ("ROT", ROT, PF_XX, [])
XXX(XVSAXWR,0, #RT,120,#VT, #SC, 0, NIL_D,ANY_D,ANGL_D,NIL_D)
ZZ("XCOORD", coordx, PF_XX, [])
XXX(XGTCMP,1, #SC,100,#VT, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XGTCMP,1, #SC,100,#TR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XGTCMP,1, #SC,100,#FR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZ("YCOORD", coordy, PF_XX, [])
XXX(XGTCMP,2, #SC,100,#VT, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XGTCMP,2, #SC,100,#TR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XGTCMP,2, #SC,100,#FR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZ("ZCOORD", coordz, PF_XX, [])
XXX(XGTCMP,3, #SC,100,#VT, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XGTCMP,3, #SC,100,#TR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
XXX(XGTCMP,3, #SC,100,#FR, 0, 0, SAME1_D,ANY_D,NIL_D,NIL_D)
ZZ("INSCALAR", inscalar, PF_XX, [])
XXX(XSCALRD,0, #SC,000,0, 0, 0, NIL_D,NIL_D,NIL_D,NIL_D)
ZZ("QUERY", qquery, PF_XX, [])
XXX(XQUERY,0, #SC,000,0, 0, 0, NIL_D,NIL_D,NIL_D,NIL_D)
ZZ("VM", vm, PF_XX, [])
XXX(XVM,0, #SC,000,0, 0, 0, NIL_D,NIL_D,NIL_D,NIL_D)
ZZ("ISAFFIXED", isaffixed, PF_XX, [])
XXX(XISAFFIXED,0,#SC,000,0, 0, 0, NIL_D,NIL_D,NIL_D,NIL_D)
ZZ("ARMREACH", armreach, PF_XX, [])
XXX(XARMREACH,0, #SC,000,0, 0, 0, NIL_D,NIL_D,NIL_D,NIL_D)
];
REQUIRE "[][]" DELIMITERS;
REDEFINE ZZ(ARG0,ARG1,ARG2)=[XX(ARG1)];
REDEFINE ZZC(ARG0,ARG1,ARG2)=[XX(ARG1)];
REDEFINE XXX(ARGNAME,ARGNDX,ARGTYPE,ARGORDER,ARG1,ARG2,ARG3,DIMR,DIM1,DIM2,DIM3)=[];
indices(op_list,_X) ;
DEFINE EXP_XX=1,BEFACT_XX=2,BFACT_XX=3,BTERM_XX=4,AEXP_XX=5,WRTREL_XX=6,
TERM_XX=7,FACTOR_XX=8, PF_XX=9;
DEFINE SAME1_D=1,SAME2_D=2,SAME3_D=3,MULT_D=4,DIVID_D=5,ANGL_D=6,
NIL_D=7,ANY_D=8,SAME_D=9,DIST_D=10,SQRT_D=11,TIME_D=12,NOCH_D=13,
SAME12_D=14,SAME123_D=15;
DEFINE #PNTINTOPS=XXCOUNT-1;
DEFINE #OPERATORS=#PNTINTOPS;